package com.carrotsearch.junitbenchmarks.h2;
import static org.junit.Assert.*;
import java.io.File;
import java.sql.*;
import org.h2.jdbcx.JdbcDataSource;
import org.junit.*;
import org.junit.rules.MethodRule;
import com.carrotsearch.junitbenchmarks.BenchmarkRule;
import com.carrotsearch.junitbenchmarks.h2.H2Consumer;
/**
* Test H2 consumer.
*/
public class TestH2Consumer
{
private static final File dbFile = new File(TestH2Consumer.class.getName());
private static final File dbFileFull = new File(dbFile.getName() + ".h2.db");
private static final String CUSTOM_KEY_VALUE = "xyz";
private static H2Consumer h2consumer;
@BeforeClass
public static void checkFile() throws SQLException
{
if (dbFileFull.exists())
assertTrue(dbFileFull.delete());
h2consumer = new H2Consumer(dbFile, new File("."), CUSTOM_KEY_VALUE);
}
@Rule
public MethodRule benchmarkRun = new BenchmarkRule(h2consumer);
@Test
public void testMethodA()
{
// empty.
}
@Test
public void testMethodB()
{
// empty.
}
@AfterClass
public static void verify() throws Exception
{
// Check DB upgrade process.
DbVersions ver = h2consumer.getDbVersion();
int maxVersion = DbVersions.UNINITIALIZED.version;
for (DbVersions v : DbVersions.values())
maxVersion = Math.max(maxVersion, v.version);
assertEquals(maxVersion, ver.version);
h2consumer.close();
assertTrue(dbFileFull.exists());
// Check if rows have been added.
final JdbcDataSource ds = new org.h2.jdbcx.JdbcDataSource();
ds.setURL("jdbc:h2:" + dbFile.getAbsolutePath());
ds.setUser("sa");
final Connection connection = ds.getConnection();
ResultSet rs = connection.createStatement().executeQuery("SELECT COUNT(*) FROM TESTS");
assertTrue(rs.next());
assertEquals(2, rs.getInt(1));
rs = connection.createStatement().executeQuery("SELECT COUNT(*) FROM RUNS");
assertTrue(rs.next());
assertEquals(1, rs.getInt(1));
rs = connection.createStatement().executeQuery("SELECT CUSTOM_KEY FROM RUNS");
assertTrue(rs.next());
assertEquals(CUSTOM_KEY_VALUE, rs.getString(1));
connection.close();
assertTrue(dbFileFull.delete());
}
}